package main

import (
	"fmt"
	"strings"
	"unsafe"
)

func main() {
	// unit8 类型表示一个 8 位的无符号整数，范围是 0 到 255。

	// 布尔值的类型为 bool，值是 true 或 false，默认为 false。
	var isActive bool                   // 全局变量声明
	var enabled, disabled = true, false // 忽略类型的声明

	fmt.Println(isActive, enabled, disabled)

	str := "这里是 www\n.runoob\n.com"
	fmt.Println("-------- 原字符串 ----------")
	fmt.Println(str)
	// 去除空格
	str = strings.Replace(str, " ", "", -1)
	// 去除换行符
	str = strings.Replace(str, "\n", "", -1)
	fmt.Println("-------- 去除空格与换行后 ----------")
	fmt.Println(str)

	str1 := "where there is a will"
	str2 := "where there is a way"
	str3 := fmt.Sprintf("%s %s", str1, str2)
	fmt.Println(str3) //拼接字符串

	var num1 int32 = 65
	// 可以将整型强制转换, 但是会按照ASCII码表来转换
	// 但是不推荐这样使用
	var str4 string = string(num1)
	fmt.Println(str4)
	fmt.Println(unsafe.Sizeof(num1))
	// unsafe.Sizeof() 函数返回变量的字节大小

	var a1 int32 = 65
	var a2 int64 = 43
	fmt.Println(int64(a1) + a2) // 把 int32 强制转换为 int64 再相加
	// 低位向高位转化不会丢失信息
	// 高位向低位转化需要注意溢出

	// var num2 float32 = 3.14
	// 不能将其它基本类型强制转换为字符串类型
	// var str2 string = string(num2)
	// fmt.Println(str2)

	// var str3 string = "97"
	// // 不能强制转换, cannot convert str2 (type string) to type int
	// var num3  int = int(str3)
	// fmt.Println(num3)

}
